今日目標
學習MicroPython控制SG90伺服馬達的核心技巧。透過ESP32的PWM訊號,精準控制馬達旋轉到指定角度。
程式碼
import time
from machine import Pin,PWM
servo_pin=Pin(18)
servo_pem=PWM(servo_pin,freq=50)
def set_angle(angle):
angle=max(0,min(180,angle)
min_duty=26
max_duty=125
duty_val=int(min_duty+(angle/180.0)*(max_duty-min_duty))
servo_pwm.duty(duty_val)
print("===Servo伺服馬達控制測試啟動===")
print("定位至0度")
set_angle(0)
time.sleep(1)
print("定位至90度")
set_angle(90)
time.sleep(1)
print("定位至180度")
set_angle(180)
time.sleep(1)
print("開始連續平滑來回掃描⋯")
while True:
for angle in range(0,181,5):
set_angle(angle)
time.sleep_ms(30)
time.sleep_ms(200)
for angle in range(180,-1,-5):
set_angle(angle)
time.sleep_ms(30)
time.sleep_ms(200)
心得
今天我們學會控制實體機械結構的第一步,學習如何將角度度數轉換為PWM的責任週期,進而推動伺服馬達精準轉動。